package com.mall.service;

import com.mall.domain.dto.CreateOrderDTO;
import com.mall.domain.dto.OrderPageQueryDTO;
import com.mall.domain.dto.UpdateAddressDTO;
import com.mall.domain.vo.OrderDetailVO;
import com.mall.domain.vo.OrderVO;
import com.mall.result.PageResult;

import java.util.List;

/**
 * @description: 订单服务
 * @author 勾新杰
 * @version 1.0
 * @date 2024/11/25 10:44
 */
public interface OrderService {

    /**
     * 创建订单
     * @param createOrderDTO 创建订单传输对象
     */
    void createOrder(CreateOrderDTO createOrderDTO);

    /**
     * 修改订单地址
     * @param updateAddressD 修改订单地址传输对象
     */
    void updateAddress(UpdateAddressDTO updateAddressD);

    /**
     * 订单详情
     * @param id 订单id
     * @return 订单视图
     */
    OrderDetailVO orderDetail(Long id);

    /**
     * 分页查询订单
     * @param orderPageQueryDTO 分页查询传输对象
     * @return 订单视图
     */
    PageResult<OrderVO> page(OrderPageQueryDTO orderPageQueryDTO);

    /**
     * 发货
     * @param id 订单id
     */
    void deliver(Long id);

    /**
     * 批量发货
     * @param ids 订单id集合
     */
    void deliverBatch(List<Long> ids);

    /**
     * 取消订单
     * @param id 订单id
     */
    void cancelOrder(Long id);

    /**
     * 确认收货
     * @param id 订单id
     */
    void confirmReceipt(Long id);
}
